Using major route decision points to select traffic cameras for display

ABSTRACT

Techniques enable selection of traffic cameras for display to a user, where the techniques involve determining a primary route and an alternate route, determining a first intersection between the primary route and the alternate route, and obtaining camera metadata identifying multiple cameras, where the camera metadata defines aspects such as positioning data, direction, status data, and image data for individual traffic cameras. The techniques also involve determining a priority score for individual cameras using the camera metadata, where the priority score is based, at least in part, on proximity to the first intersection between the primary route and the alternate route. The techniques then involve selecting at least one traffic camera based on the priority score of the camera and communicating image data of the camera for display on a display device.

BACKGROUND

Currently, many devices, such as mobile telephones or Global PositioningSystem (GPS) navigation devices, and systems, such as automobileon-board systems, include traffic applications that provide users withmaps, driving directions, and traffic information. Many examples ofthese applications provide directions for a primary route from a currentlocation to a destination location selected by a user. Some applicationsalso provide one or more alternative routes that are displayed to a useralong with the primary route.

Also, there are many traffic cameras now available, such as throughstate departments of transportation, that a user may view to evaluatetraffic conditions as observable from the traffic cameras. Generally, auser accesses the traffic cameras through a website and the user selectsparticular cameras along a route under consideration by the user. Forexample, a user in the Seattle area may access traffic cameras throughthe Washington State Department of Transportation system, which providesan interactive map showing several major roadways in the Seattle areaalong with color-coded traffic conditions and icons representing trafficcameras along these roadways.

Typically, a user selects a camera icon on the interactive map fordisplay of the image from the traffic camera associated with the icon.Information regarding the camera may also be provided, such as thelocation of the camera, the direction to which the camera is oriented,and a time stamp indicating when the image from the camera was captured.

In order to make decisions about which route a user will take to adestination, one useful input is traffic cameras along that route. Themost useful traffic cameras to show any given user are ones that willhelp the user determine what route to take to a destination. A user mayselect a traffic camera appearing at a point on the map along apreferred route, e.g., a primary route, in order to evaluate the currenttraffic conditions at that point in time. The user may also select othercameras along an alternative route in order to evaluate whether to takethe alternative route when the primary route is experiencing trafficdelays.

Unfortunately, such methods involving a manual selection process can becumbersome. In addition, camera images may not be provided to drivers ina timely manner since a driver is often tasked to look at camera viewsbefore they start their route. Safety becomes an issue when driversattempt to manually select cameras while driving.

It is with respect to these and other considerations that the disclosuremade herein is presented.

SUMMARY

The techniques disclosed herein utilize multiple data sources to selecttraffic cameras for display to a user that are relevant to a user'sdecision whether to take one or more alternate routes to a destination.The techniques disclosed herein involve determining a primary route anda first alternate route, determining at least a first trafficintersection between the primary route and the first alternate route,and obtaining camera metadata identifying multiple traffic cameras. Thecamera metadata can define one or more of positioning data of one ormore traffic cameras, data defining a direction of one or more trafficcameras, status data of one or more traffic cameras, and image data ofone or more traffic cameras. The techniques also involve determining apriority score for individual traffic cameras using the camera metadata,the priority score being based, at least in part, on their proximity tothe first traffic intersection between the primary route and the firstalternate route. The techniques can also involve selecting at least onecamera of the plurality of traffic cameras based on the priority scoreof the camera. Image data of the selected camera can be communicated toone or more computers for display on a display device.

Other aspects of the techniques disclosed herein can also includedetermining a priority score for individual cameras using the camerametadata. In some embodiments, the priority score is further based ondata defining the orientation of one or more of traffic cameras, dataindicating whether a camera is positioned before or after the firsttraffic intersection, data defining an operational status, data definingthe quality of an image, data defining a type of intersection, datadefining a time stamp, data defining a type of image, data defining anindividual user history, data defining a crowdsourced history, trafficdata, and data defining historical performance of a route and/orintersection.

Still other aspects of the techniques disclosed herein can also includedetermining a priority score for individual traffic cameras using aweighting factor associated with one or more of a proximity to the firstintersection camera orientation, camera position before or after thefirst intersection, operational status, image quality, type ofintersection, time stamp, type of image, individual user history,crowdsourced history, traffic data and historical performance. In someaspects of the techniques disclosed herein, the priority scoringrelating to the type of traffic intersection distinguishes betweenwhether the intersection contains a stop sign, a traffic light, anon-ramp, a left turn signal, or a right turn lane.

In some aspects of the techniques disclosed herein, a system can receivea receive a request from a client device for traffic routing informationand selection of a number N of traffic cameras for display by the clientdevice, where N is the number of camera image display areas that theclient device is configured to display. Responsive to the request fromthe client device, the system can determine a primary route and analternate route and determine a first intersection (320) between theprimary route and the alternate route. The system can obtain (410)camera metadata identifying a plurality of cameras, where the camerametadata defines at least one of positioning data, direction, statusdata, and image data for individual cameras of the plurality of cameras.The system determines a priority score for individual cameras of theplurality of cameras using the camera metadata, where the priority scoreis based, at least in part, on proximity to the first intersectionbetween the primary route and the first alternate route. This systemselects N traffic cameras of the plurality of cameras based on thepriority score of the camera. The system communicates traffic routinginformation to the client computing device that includes the primaryroute and the alternate route along with selection data defining the Nselected cameras.

In still other aspects of the techniques disclosed herein, a clientsystem operates to send a request from a client device for trafficrouting information and selection of a number N of traffic cameras. Theclient system receives traffic routing information and selection datafor N selected traffic cameras and displays a primary route and analternate route from the received traffic routing information. Using thereceived selection data, the client system obtains camera image data foreach of the N selected traffic cameras and displays the camera imagedata for each of the N selected traffic cameras.

It should be appreciated that the above-described subject matter mayalso be implemented as a computer-controlled apparatus, a computerprocess, a computing system, or as an article of manufacture such as acomputer-readable medium. These and various other features will beapparent from a reading of the following Detailed Description and areview of the associated drawings. This Summary is provided to introducea selection of concepts in a simplified form that are further describedbelow in the Detailed Description.

This Summary is not intended to identify key features or essentialfeatures of the claimed subject matter, nor is it intended that thisSummary be used to limit the scope of the claimed subject matter.Furthermore, the claimed subject matter is not limited toimplementations that solve any or all disadvantages noted in any part ofthis disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The Detailed Description is described with reference to the accompanyingfigures. In the figures, the left-most digit(s) of a reference numberidentifies the figure in which the reference number first appears. Thesame reference numbers in different figures indicate similar oridentical items.

FIG. 1 is a block diagram showing an illustrative system for enablingselection of traffic cameras for display to a user;

FIGS. 2A-2B are block diagrams showing illustrative examples of devicesor systems for providing map data and traffic camera images to a user;

FIG. 3 is a schematic diagram of a map illustrating a primary route,alternative routes and traffic cameras along the routes;

FIGS. 4A, 4B and 4C are flow diagrams showing illustrative examples ofroutines disclosed herein for selecting traffic cameras for display to auser;

FIGS. 5A and 5B are flow diagrams showing further details of theillustrative example of FIGS. 4A and 4B;

FIG. 6 is a computer architecture diagram illustrating an illustrativecomputer hardware and software architecture for a computing systemcapable of implementing aspects of the techniques and technologiespresented herein;

FIG. 7 is a diagram illustrating a distributed computing environmentcapable of implementing aspects of the techniques and technologiespresented herein; and

FIG. 8 is a computer architecture diagram illustrating a computingdevice architecture for a computing device capable of implementingaspects of the techniques and technologies presented herein.

DETAILED DESCRIPTION

The following Detailed Description describes technologies enabling theselection of traffic cameras for display using major traffic routedecision points. In order to make decisions about which route a userwill take from one location to another, one useful input is trafficcameras along that route. The most useful traffic cameras to show a userare ones that will help the user determine what route that user willtake. In some configurations, a primary route and one or morealternative routes are determined based on a user's selection of astarting point and a destination. At least one decision point isidentified based on the traffic intersections of the primary andalternative routes. Traffic camera metadata is obtained and used toidentify cameras that may be relevant to the decision point based, forexample, on the proximity of the traffic camera to the decision point,orientation of the camera, and whether the camera is adjacent to theprimary or alternate routes. One or more cameras are selected fordisplay to a user based on relevance of the traffic cameras to thedecision point. For illustrative purposes, a decision point can be alocation on a route where a driver can decide whether to turn to a firstroute or turn to a second route. In some configurations, a decisionpoint can include a traffic intersection, where three or more roadsintersect, an on-ramp for accessing an expressway, or an exit ramp forleaving an expressway.

In one simplified example, at a traffic intersection between the primaryroute and an alternate route, there may be several traffic cameras thatare relevant to making a decision at the intersection. For illustrativepurposes, the intersection, also referred to herein as the firstintersection, is a decision point.

A first camera is located near the intersection, positioned at alocation along the primary route that a user would encounter whiletraveling along the primary route before reaching the intersection withthe alternate route, and is oriented to face away from the trafficintersection. This first traffic camera would thus have low relevance tothe route decision at the intersection due to its location prior to thedecision point and because this first traffic camera does not show thetraffic at the decision point.

In this illustrative example, a second traffic camera is near thetraffic intersection, positioned along the alternate route past theintersection, and oriented to face the intersection. This second trafficcamera would thus have high relevance to the route decision because itwould show traffic at the decision point.

In this illustrative example, a third traffic camera is positioned alongthe primary route facing a second intersection that is located tenblocks past the decision point and, based on historical data, which istypically busy. This camera would have moderately high relevance to theroute decision because it would show traffic at a historical delay pointalong the primary route.

Also in this example, a fourth traffic camera is positioned along thealternative route at a location twenty blocks from the first trafficintersection and which may show the flow of traffic along the alternateroute at that location. In this example, the fourth traffic camera wouldhave moderate relevance to the route decision because it may showwhether traffic along the alternate route is moving.

In some configurations, the traffic cameras are scored based on theirrelevance to the route decision and are selected for display based ontheir relevance score. For example, if only two cameras may bedisplayed, then the second and third cameras are selected. If threecameras may be displayed, then the second, third and fourth cameras areselected.

This is a simplified example and many factors may be considered inselecting traffic cameras for display, such as traffic data, map data,weather data, user preferences, individual historical data, crowdsourcedhistorical data, individual preferences, and status data, as will bediscussed in greater detail below. In some configurations, thetechniques disclosed herein assign a weighted score to a set of trafficcameras for particular primary and alternate routes.

It should be appreciated that the above-described subject matter may beimplemented as a computer-controlled apparatus, a computer process, acomputing system, or as an article of manufacture such as acomputer-readable storage medium. These and various other features willbe apparent from a reading of the following Detailed Description and areview of the associated drawings. Furthermore, the claimed subjectmatter is not limited to implementations that solve any or alldisadvantages noted in any part of this disclosure.

As will be described in more detail herein, it can be appreciated thatimplementations of the techniques and technologies described herein mayinclude the use of solid state circuits, digital logic circuits,computer component, and/or software executing on one or more devices.Signals described herein may include analog and/or digital signals forcommunicating a changed state, movement and/or any data associated withmotion detection. Gestures captured by users of the computing devicescan use any type of sensor or input device.

While the subject matter described herein is presented in the generalcontext of program modules that execute in conjunction with theexecution of an operating system and application programs on a computersystem, those skilled in the art will recognize that otherimplementations may be performed in combination with other types ofprogram modules. Generally, program modules include routines, programs,components, data structures, and other types of structures that performparticular tasks or implement particular abstract data types. Moreover,those skilled in the art will appreciate that the subject matterdescribed herein may be practiced with other computer systemconfigurations, including hand-held devices, multiprocessor systems,microprocessor-based or programmable consumer electronics,minicomputers, mainframe computers, and the like.

In order to make decisions about which route a user will take from onelocation to another, one useful input is traffic cameras along thatroute. The most useful traffic cameras to show any given user are onesthat will help a user determine what route that user will take. In someconfigurations, a primary route and one or more alternative routes maybe determined based on a user's selection of a starting point and adestination. At least one decision point is identified based on thetraffic intersections of the primary and alternative routes. Trafficcamera metadata is obtained and used to identify cameras that may berelevant to the decision point based, for example, on the proximity ofthe camera to the decision point, orientation of the camera, and whetherthe camera is adjacent to the primary or alternate routes. One or moretraffic cameras are selected for display to a user based on relevance ofthe cameras to the decision point.

By the use of the technologies described herein, data from a number ofresources can be utilized for enabling the selection of traffic camerasfor display using major route decision points. Such technologies canimprove user interaction with a computing device by automaticallyidentifying and selecting traffic cameras for display that may berelevant to at least one decision point between primary and alternateroutes. Certain configurations may be beneficial in assisting users todecide amongst multiple proposed routes while a computer user is drivinga vehicle. Among many benefits provided by the technologies describedherein, a user's interaction with a device may be improved, which mayreduce the potential for distraction involved in obtaining informationpertinent to decisions made while driving. Other technical effects otherthan those mentioned herein can also be realized from implementation ofthe technologies disclosed herein.

In the following detailed description, references are made to theaccompanying drawings that form a part hereof, and in which are shown byway of illustration specific configurations or examples. Referring nowto the drawings, in which like numerals represent like elementsthroughout the several figures, aspects of a computing system,computer-readable storage medium, and computer-implemented methodologiesfor enabling selection of traffic cameras for display using major routedecision points will be described. As will be described in more detailbelow with respect to FIGS. 6-8, there are a number of applications andservices that may embody the functionality and techniques describedherein.

FIG. 1 is a block diagram showing aspects of one example environment100, also referred to herein as a “system 100,” disclosed herein forenabling selection of traffic cameras for display using major routedecision points. In one illustrative example, the example environment100 can include one or more servers 120, one or more networks 150, oneor more user devices 101A-101C (collectively “user devices 101”), andone or more resources 106A-106E (collectively “resources 106”). The userdevices 101 can be utilized for interaction with one or more users103A-103C (collectively “users 103”). This example is provided forillustrative purposes only and is not to be construed as limiting. Itcan be appreciated that the example environment 100 can include anynumber of devices, users, resources, and/or any number of servers 120.

For illustrative purposes, the resources 106 can be any type of entitycapable of providing data suitable for use in the present approach. Ingeneral, the techniques disclosed herein enable users to utilize datafrom a number of resources 106 to generate map data 130, traffic data132, status data 134, weather data 136, camera metadata 140 and cameraimage data 142. Data collected from user devices 101 may be used togenerate preference data 124, user drive history data 134, and socialnet data 138. User drive history data 134 includes data pertaining tothe drive history for an individual user 103. In some configurations,the historical data from multiple users 103 may be collected to extractcrowdsourced history data from user drive history data 134.

The user devices 101, data resources 106, servers 120 and/or any othercomputer(s) configured with the features disclosed herein can beinterconnected through one or more local and/or wide area networks, suchas the network 150. In addition, the computing devices can communicateusing any technology, such as BLUETOOTH, WIFI, WIFI DIRECT, NFC or anyother suitable technology, which may include light-based, wired, orwireless technologies. It should be appreciated that many more types ofconnections may be utilized than described herein.

A user device 101 can operate as a stand-alone device, or such devicescan operate in conjunction with other computers, such as the one or moreservers 120. Individual computing devices can be in the form of apersonal computer, mobile phone, tablet, wearable computer, including ahead-mounted display (HMD) or watch, or any other computing devicehaving components for interacting with one or more users and/or remotecomputers. In one illustrative example, the user device 101 can includea local memory 180, also referred to herein as a “computer-readablestorage medium,” configured to store data, such as a client module 102and other contextual data described herein.

The servers 120 may be in the form of a personal computer, server farm,large-scale computing system or any other computing system havingcomponents for processing, coordinating, collecting, storing, and/orcommunicating data between one or more computing devices. In oneillustrative example, the server(s) 120 can include a local memory 180,also referred to herein as a “computer-readable storage medium,”configured to store data, such as a server module 121 and other datadescribed herein. The servers 120 can also include components andservices, such as the application services and components shown in FIG.6, for providing, receiving, and processing mapping, traffic data, andother data, and executing one or more aspects of the techniquesdescribed herein. As will be described in more detail herein, anysuitable module may operate in conjunction with other modules or devicesto implement aspects of the techniques disclosed herein.

The system 100 may include a number of resources, such as a traffic dataresource 106A, map data resource 106B, search engine resource 106C,traffic camera resource 106D, and a weather data resource 106E(collectively referred to herein as “resources 106”). The resources 106can be a part of the server(s) 120 or be separate from the server(s)120, and the resources 106 can provide data relevant to mapping andtraffic decisions, including preference data 124, location data 125, mapdata 130, traffic data 132, user drive history data 134, weather data136, social network data 138, camera metadata 140, camera image data142, and other data described herein.

These example resources 106 and data are provided for illustrativepurposes only and are not to be construed as limiting. It can beappreciated that the techniques disclosed herein may utilize more orfewer resources 106 as shown in FIG. 1. It can also be appreciated thatsome of the resources shown in FIG. 1 can obtain any type of mapping,navigation, camera and traffic information from other resources such associal networks, e-commerce systems, government systems, and other likesources. For instance, traffic information data and camera metadata andimage data may be provided by a state department of transportation (DOT)website.

Preference data 124 may include user-defined preferences such aspreferred destinations or preferred routes. In some configurations, thepreference data 124 may include a number of weighted parameters thatindicate priorities, preferences, and/or goals. The preference data 124may also include a user selection for a preferred maximum level ofdifficulty for a driving route. Location data 125 may include geographiclocation information, such as GPS coordinates, that identify a locationof, for example, the server module 121 or user devices 101 for purposesof searching on-line resources for information pertinent to conditionsfor the geographical area local to the server module 121 or user devices101.

The map data 130 can define roads and other types of travel paths withina geographic area. The map data 130 can also include topography data andother data that may influence a commute of a user from one location toanother. The map data 130 may also include metadata regarding featureson maps, such as identification of types of roads (e.g. expressway,highway, arterial, or residential), types of traffic intersections (e.g.stop sign, traffic light, on-ramp, left turn signal, or right turnlane), or historical data (e.g. busy street crossing or frequent backuppoint). The map data 130 can also include data defining buildings,homes, and other landmarks. The map data 130 can additionally includeimage data, which may include a satellite image of the roads and pathswithin a geographic area, as well as images of buildings, homes andother landmarks. The map data 130 may be from a number of resources,including a web-based service, government services, or other resources.

The traffic data 132 can include real-time updates on vehicle trafficwithin a geographic area. The traffic data 132 can also includehistorical travel data that can be used to predict travel times betweentwo or more locations. The traffic data 132 may include historical dataindicating routes, streets, intersections, exits, on-ramps, curves, orother traffic features that are historically busy or not busy at aparticular time of day (e.g. Route 520 westbound typically has heavytraffic from 4 PM to 7 PM on work days). The traffic data 132 can be inany suitable format for defining projected travel times between two ormore locations that considers a time of travel, weather at a time oftravel, traffic at a time of travel, and other factors that mayinfluence a projected travel time. For example, the traffic data 132 caninclude updates with respect to road closures, delays, construction, newroads, or other scenarios that can impact activity with respect to acalendar event. The traffic data 132 may be from a number of resources,including a web-based service, government services, or other resources.

The user drive history data 134 can include driving history data for oneor more users 103. For an individual user 103, the drive history data134 may include frequently taken routes and performance data for thoseroutes. Analyzing an individual user's drive history may indicate routesthat are more or less difficult for the user to navigate. Analyzing thecollected drive history data from many users may generate crowdsourceddata on different routes and historical performance on those routes. Theuser drive history data 134 may be obtained from user devices 101 aswell as from web-based services, government services, or otherresources.

The weather data 136 can include current, historical, and forecast dataindicating weather conditions. The weather data 136 can include datawith respect to wind, precipitation, temperature and other conditionsthat may influence a commute from one location to another. The weatherdata 136 can be in any suitable format for enabling the projection oftravel times between two or more locations. The weather data 136 may befrom a number of resources, including a web-based service, governmentservices, or other resources.

The social net data 138 may include information emanating from socialnetwork sources, such as posts about traffic problems, which may berelevant to routes. The social net data 138 would typically be fromweb-based services, such as social networking websites.

The camera metadata 140 can include, but is not limited to, a camera'sidentifier, location, orientation, type of camera (e.g. video or stillphoto), frequency of updates, image quality, status or any other datarelated to a traffic camera. In some configurations, the metadata 140can include any format suitable for use in evaluating and scoring acamera for use in user navigation. Camera image data 142 may includeimages obtained from one or more traffic cameras corresponding tocameras identified in camera metadata 140.

FIGS. 2A and 2B are block diagrams that illustrate examples of a system100 that provide a framework for several example scenarios utilizing thetechniques disclosed herein. More specifically, this block diagram ofthe system 100 shows an illustrative example of user devices 101A and101B that provide route navigation information and display camera imagesthat a user may utilize to make driving decisions.

In the example of FIG. 2A, the user device 101A is a mobile telephonehaving a display screen 200A that includes a map display area 250A andimage display areas 202A and 202B. The map display area 250A displays astreet map view populated from map data 130 of the server(s) 120 alongwith navigation indicators to guide a driver. Image display areas 202Aand 202B display traffic camera video or still images populated fromcamera image data 135 that are relevant to decision making with respectto routes shown in map display area 250A in accordance with one or moreaspects of the techniques described herein.

In the example of FIG. 2B, the user device 101B is an on-board computersystem for installation in a vehicle having a display screen 200B thatincludes a map display area 250B and image display areas 202BA, 202BBand 202BC. The map display area 250B displays a street map viewpopulated from map data 130 of server(s) 120 along with navigationindicators to guide a driver. Image display areas 202BA, 202BB and 202BCdisplay traffic camera video or still images that are relevant todecision making with respect to routes shown in map display area 250B inaccordance with one or more aspects of the techniques described herein.These devices are illustrative examples only and other types of devicesmay be utilized in accordance with the techniques described herein.

FIG. 3 is a schematic diagram illustrating an example of a routing map300 to which the techniques described herein may be applied. The exampleshown includes a starting point 302 and a destination point 304 with aprimary route 310 mapped between the points where an arrow on theprimary route 310 indicates the direction of travel. In addition, theexample includes alternate routes 314 and 316 that are visible to a useron a display, such as map display areas 250A and 250B in FIGS. 2A and2B. Another alternate route 318 is illustrated that would not normallybe displayed to a user, but which may be considered in selecting trafficcameras for display in accordance with the techniques described herein.The primary route 310, first alternate route 312, second alternate route314, third alternative route 316 and further alternate route 318 may bedetermined using traffic routing techniques that are known to one ofordinary skill in the art.

The routing map 300 illustrates several decision points where theprimary route intersects with the alternate routes. First intersection320 represents a decision or inflection point for alternate route 312from primary route 310. Similarly, second intersection 330 represents adecision or inflection point for alternate route 314 from primary route310 and third intersection 340 represents a decision or inflection pointfor alternate route 316.

Also included in routing map 300 are a series of icons representingtraffic cameras along the primary route 310 and alternate routes 312,314, 316 and 318. The position of each camera icon on routing map 300indicates the location of the traffic camera and an arrow in the iconindicates the orientation of the traffic camera. For example, trafficcamera 322A is positioned along the primary proposed route 310 betweenthe starting point 302 and first intersection 320 and faces away fromthe direction of travel along primary route 310 toward starting point302, which is indicated in the metadata 324A associated with trafficcamera 322A. Traffic camera 322B is positioned along alternate route 312past decision point 320 in the direction of travel along the firstalternate route 312 and facing away from the first intersection 320.Traffic camera 326 is positioned in the direction of travel alongprimary route 310 past decision point 320 and faces back towardsdecision point 320. The other camera icons similarly represent thelocation and orientation of a corresponding camera. Camera metadata,which can include, but is not limited to, a camera's identifier,location, orientation, type of camera (e.g. video or still photo),frequency of updates, image quality, status or any other data related toa traffic camera, is indicated in association with its correspondingtraffic camera. Thus, camera metadata 324A-D corresponds to trafficcameras 322A-D, camera metadata 334A-D corresponds to traffic cameras332A-D, and camera metadata 344A-C corresponds to traffic cameras342A-C.

FIGS. 4A, 4B and 4C are flow diagrams illustrating examples of routinesfor selecting traffic cameras for display to a user. FIG. 4A is a flowdiagram illustrating one example of a traffic camera selection process400 in accordance with certain aspects of the present techniques thatcan be applicable to a selection process in multiple devices or within asingle device. At operation 402, map data is obtained, such as from mapdata 130. At operation 404, a primary route and at least one alternateroute is mapped based on the map data and a user selection of adestination point and either user selection of a starting point or theuser's current location. At 406, decision points are identified from theintersections of the primary route and alternate routes. With referenceto the example of routing map 300, intersections 320, 321, 330 and 340are identified from the intersection of primary route 310 with alternateroutes 312, 318, 314 and 316, respectively.

At operation 410, traffic camera metadata is obtained, such as fromcamera metadata 140, and is used to identify traffic cameras that arerelevant to the intersections 320, 321, 330 and 340. For example,traffic cameras that are located within a given proximity of theintersections or located along the primary and alternate routes areidentified and their metadata analyzed to determine their relevance tothe intersections.

With reference to routing map 300, traffic cameras 322A-C may beidentified at operation 410 based on their proximity to intersection 320where primary route 310 and alternate route 312 intersect. Camera 322Dmay also be identified based on its location adjacent to alternate route312. Similarly, cameras 332A and 332B may be identified based on theirproximity to intersection 330 and cameras 342A and 342B may beidentified based on their proximity to intersection 340. Camera 334C maybe identified based on its location adjacent to alternate route 314,camera 334D may be identified based on its location adjacent to primaryroute 310, and camera 344C may be identified based on its locationadjacent to alternate route 316.

At operation 412, N cameras are selected for display based on theirrelevance to a next intersection to be encountered along the proposedroute to be traveled. The number N, in this example, is based on thenumber of camera display areas available for display of camera images toa user. Thus, for user device 101A of FIG. 2, which has two cameradisplay areas 202A and 202B, N is 2. For user device 101B of FIG. 2,which has three camera display areas 202BA, 202BB and 202BC, N is 3.

Returning to FIG. 3, with reference to routing map 300, intersection 320is the first decision point encountered during travel from startingpoint 302 on primary route 310. Multiple factors may be utilized inevaluating the relevance of traffic cameras with respect to a decisionpoint. Evaluating the traffic cameras shown in the routing map 300 basedon their proximity to intersection 320 scores cameras 322A, 322B and322C highest, though camera 322A may be scored lower than cameras 322Band 322C because it is positioned before intersection 320 along thedirection of travel on primary path 310.

When camera orientation is also considered, camera 322C scores higherthan cameras 322A and 322B because it is oriented to face towardsintersection 320, whereas camera 322A is pointed back toward startingpoint 302 and camera 322B is oriented to face along alternate route 312.The other traffic cameras may also be scored based on their adjacency toa primary or alternate path, their proximity to an importantintersection, or other factors.

In this example, using N equals 2, such as for user device 101A, cameras322B and 322C are selected for display. If N is 3, such as for userdevice 101B, then, based on the relevancy score, camera 322D may also beselected because it is adjacent to alternate route 312, for whichtraffic intersection 320 is the decision point, and it shows trafficalong adjacent route 312.

Returning to FIG. 4A, at operation 414, the camera selection from step412 is communicated to a device and rendered for display to a user. Forexample, the camera images for the selected camera may be communicatedto a device where the images are rendered for display on a display ofthe device, such as display 200A of device 101A of FIG. 2A or display200B of device 101B of FIG. 2B. In another example, identifiers for theselected cameras, e.g. an identifying number or a URL, may becommunicated to a device and the client device retrieves the images forthe selected cameras for rendering and display on a display of thedevice. The communication of the camera selection can, for example,involve transmitting the camera selection from a processor thatperformed the selection to another processor for display or can involvecommunicating the selection from a process that performed the selectionto another process for display within the same computing system ordevice.

Note that process 400 may be repeated for other intersections ordecision points as the user travels along the chosen route. For example,with reference to the example of routing map 300, the user may choose toremain on the primary proposed route 310 at intersection 320, in whichcase, the next intersection is intersection 330. Here, the trafficcameras are again scored for relevance to intersection 330 and, when Nequals 2, cameras 332 and 334 are selected based on their closeproximity to the intersection 330. When N equals 3, camera 336 may alsobe selected based on traffic data indicating heavier traffic onalternate route 314 than primary proposed route 310.

FIG. 4B is a flow diagram illustrating another example of a trafficcamera selection process 420 that can be executed in a server or cloudexecuting environment in order to interact with a client device inaccordance with certain aspects of the present techniques. At operation421, a request is received from a client device, such as a mobile phone,navigation device or on-board computer system, for traffic routinginformation and a selection of N camera images for display on the clientdevice, the number N being related to the number of camera images thatthe client device is capable of displaying or is configured to display.At operation 422, similar to operation 402 of FIG. 4A, map data isobtained, such as from map data 130. At operation 424, similar tooperation 404 of FIG. 4A, a primary route and at least one alternateroute is mapped based on the map data and a user selection of adestination point and either user selection of a starting point or theuser's current location. At operation 426, similar to operation 406 ofFIG. 4A, decision points are identified from the intersections of theprimary route and alternate routes.

At operation 430, similar to operation 410 of FIG. 4A, traffic camerametadata is obtained, such as from camera metadata 140, and is used toidentify traffic cameras that are relevant to the intersections 320,321, 330 and 340.

At operation 432, similar to operation 412 of FIG. 4A, N cameras areselected for display based on their relevance to a next intersection tobe encountered along the proposed route to be traveled. The number N, inthis example, is based on the number of camera display areas availableon the client device for display of camera images to a user. Thus, foruser device 101A of FIG. 2, which has two camera display areas 202A and202B, N is 2. For user device 101B of FIG. 2, which has three cameradisplay areas 202BA, 202BB and 202BC, N is 3.

At operation 434, the traffic routing information, such as the primary310 and first alternate route 312, is communicated to the client devicealong with selection data identifying the N selected cameras so that theclient device can display the primary and alternate routes and thecamera images for the N selected cameras.

FIG. 4C is a flow diagram illustrating another example of a trafficcamera selection and display process 450 that can be executed in aclient device that can interact with process 420 of FIG. 4B executing ina server or cloud executing environment in accordance with certainaspects of the present techniques. At operation 452, a request is sentfrom a client device, such as a mobile phone, navigation device oron-board computer system, for traffic routing information and aselection of N camera images for display on the client device, thenumber N being related to the number of camera images that the clientdevice is capable of displaying or is configured to display. Atoperation 454, the client device receives traffic routing informationand selection data for N selected cameras. At operation 456, the clientdevice displays the primary and alternate routes from the receivedtraffic routing information, such as in map display area 250A of displayscreen 200A of client device 101A in FIG. 2A or map display area 250B ofdisplay screen 200B of client device 101B in FIG. 2B.

At operation 460, the client device uses the received selection data toobtain camera image data for each of the N selected cameras. Forexample, the selection data may include a URL for the image data foreach selected camera, which the client device utilizes to retrieve thecorresponding camera image data. At operation 462, the client devicedisplays the image data for each of the N selected cameras, such as incamera image display areas 202A and 202B of display screen 200A ofclient device 101A in FIG. 2A or camera image display areas 202BA, 202BBand 202BC of display screen 200B of client device 101B in FIG. 2B.

One of ordinary skill in the art will recognize that a wide variety ofapproaches may be utilized and factors considered in selecting trafficcameras for display without departing from the techniques shown herein.

Referring now to FIG. 5A, a flow diagram illustrating one example of animplementation of selection operation 412 is shown and described herein.At operation 502, cameras are identified from camera metadata 140 basedon proximity to the next decision point along the route of travel orbased on being located on portions of the primary route and alternateroutes that are adjacent to the next decision point. With reference torouting map 300, in this example, this results in the identification ofcameras 322A, 322B, 322C, and 322D.

Traffic cameras may also be identified based on a correlation betweenroutes, for example, where each of the primary routes and alternateroutes includes a bridge with traffic cameras on each bridge showing thetraffic. Because the routes are correlated, showing the traffic camerason each of the bridges may be highly relevant to a user's routedecision. This correlation may be determined in a variety of ways, suchas from individual user data (e.g. the user typically takes one or theother of the primary or alternate routes at a particular time of day),crowdsourced historical data (e.g. many drivers typically take one ofthe primary or alternate routes at a particular time of day), orpredetermined (e.g. a traffic engineer identifies the correlation).

At operation 504, the identified traffic cameras are scored based onmultiple factors. For example, the factors considered may include one ormore of: proximity to the decision point, camera direction ororientation, operational status (e.g. out of service), image quality(e.g. camera is historically obscured by rain from a particulardirection), type of traffic intersection (e.g. major crossroad, on-rampto expressway, four-way stop), time stamp (e.g. most up to date image),video or still (e.g. live action video may convey more informationregarding traffic), individual user history (e.g. the user's typicalcommuter route home), crowdsourced history (e.g. many other userstypically take a particular alternate route), historical data (e.g.points that frequently experience delays), or historical performance(e.g. has the user made better time on an alternate route in the past).In this example, at operation 506, traffic cameras that are upstreamfrom the decision point, e.g. positioned at a location along the primaryroute that a user would encounter before reaching the intersection withthe alternate route and are oriented to face away from the trafficintersection, are excluded from consideration as insufficientlyrelevant. At operation 508, N traffic cameras are selected for displayto a user based on the scoring in operation 504. These factors areillustrative examples and are not intended to limit the scope of thetechniques shown. Other factors or combinations of factors that yieldcamera selections that may be useful to a user may be employed in thedesign of a system in accordance with these techniques.

Referring now to FIG. 5B, a flow diagram illustrating another example ofan implementation of selection operation 412 utilizing a weightedscoring scheme is shown and described herein. At operation 520, trafficcameras are identified from camera metadata 140 based on being locatedon portions of the primary proposed route and alternate routes. Atoperation 530, each identified camera is scored based on cumulativeweighted scores for multiple factors. At operation 532, the camera isscored based on proximity to the next decision point and the score isweighted by weighting factor W1, where W1 is a high value to reflect therelative significance of this factor to the selection process. Atoperation 534, the camera is scored based on its orientation withrespect to the intersection or decision point, the score weighted byweighting factor W2, and the result summed with the weighted score fromthe previous step. At operation 536, the camera is scored based on thetype of traffic intersection (e.g. busy street, major crossroad) orroadway (e.g. expressway, arterial, residential) that it is locatednear, the score weighted by weighting factor W3, and the weighted scoreadded to the cumulative score. Similarly, at operation 538, the trafficcamera is scored and weighted based on historical traffic data and, atoperation 539, the traffic camera is scored on the user's historicaldata. At operation 540, N traffic cameras are selected for display basedon their weighted scores. The criteria considered for selection and theassociated weighting factors are a matter of design choice for animplementer of the techniques described herein and not limited to theillustrative examples shown.

Note that the selection process 400 and other processes described hereinmay be implemented in a server, such as server module 121, or the cloud,and data defining the traffic camera selections may be communicated to auser device for display. Alternatively, the selection process may beimplemented in a client device. In still other examples, some operationsmay be implemented in one set of computing resources, such as servers,and other steps may be implemented in other computing resources, such asa client device.

It should be understood that the methods described herein can be endedat any time and need not be performed in their entireties. Some or alloperations of the methods described herein, and/or substantiallyequivalent operations, can be performed by execution ofcomputer-readable instructions included on a computer-storage media, asdefined below. The term “computer-readable instructions,” and variantsthereof, as used in the description and claims, is used expansivelyherein to include routines, applications, application modules, programmodules, programs, components, data structures, algorithms, and thelike. Computer-readable instructions can be implemented on varioussystem configurations, including single-processor or multiprocessorsystems, minicomputers, mainframe computers, personal computers,hand-held computing devices, microprocessor-based, programmable consumerelectronics, combinations thereof, and the like.

Thus, it should be appreciated that the logical operations describedherein are implemented (1) as a sequence of computer implemented acts orprogram modules running on a computing system and/or (2) asinterconnected machine logic circuits or circuit modules within thecomputing system. The implementation is a matter of choice dependent onthe performance and other requirements of the computing system.Accordingly, the logical operations described herein are referred tovariously as states, operations, structural devices, acts, or modules.These operations, structural devices, acts, and modules may beimplemented in software, in firmware, in special purpose digital logic,and any combination thereof.

As described herein, in conjunction with the FIGURES described herein,the operations of the routine 400 are described herein as beingimplemented, at least in part, by an application, component, and/orcircuit. Although the following illustration refers to the components ofFIG. 1, it can be appreciated that the operations of the routine 400 maybe also implemented in many other ways. For example, the routine 400 maybe implemented, at least in part, by a computer processor or a processoror processors of another computer. In addition, one or more of theoperations of the process 400 may alternatively or additionally beimplemented, at least in part, by a computer working alone or inconjunction with other software modules, such as the server module 121.

For example, the operations of process 400 are described herein as beingimplemented, at least in part, by an application, component and/orcircuit, such as the client module 102 and/or the server module 121,which are generically referred to herein as modules. In someconfigurations, the modules can be a dynamically linked library (DLL), astatically linked library, functionality produced by an applicationprograming interface (API), a compiled program, an interpreted program,a script or any other executable set of instructions. Data and/ormodules, such as the data and modules disclosed herein, can be stored ina data structure in one or more memory components. Data can be retrievedfrom the data structure by addressing links or references to the datastructure.

Although the following illustration refers to the components of FIGS. 1,6, 7 and 8, it can be appreciated that the operations of the process 400may be also implemented in many other ways. For example, the process 400may be implemented, at least in part, by a processor of another remotecomputer or a local computer or circuit. In addition, one or more of theoperations of the process 400 may alternatively or additionally beimplemented, at least in part, by a chipset working alone or inconjunction with other software modules. Any service, circuit orapplication suitable for providing the techniques disclosed herein canbe used in operations described herein.

At operation 414, the camera selection may be communicated for displayto a user. For example, one computing device, such as server 120, mayselect the N cameras for display and then communicate that selection toanother computer device, such as user device 101, for display to a user.The communication may take the form of an identifier, such as a URL fromcamera metadata 140, being sent for each selected camera or the cameraimage for each selected camera, such as image data from camera imagedata 135, being sent to the other computer device. In another example,the selection of the cameras for display may be made in a computingdevice, such as user device 101, and communicated to a display withinthe same device.

FIG. 6 shows additional details of an example computer architecture 600for a computer, such as the computing device 101 (FIG. 1), capable ofexecuting the program components described herein. Thus, the computerarchitecture 600 illustrated in FIG. 6 illustrates an architecture for aserver computer, mobile phone, a PDA, a smart phone, a desktop computer,a netbook computer, a tablet computer, an on-board computer, and/or alaptop computer. The computer architecture 600 may be utilized toexecute any aspects of the software components presented herein.

The computer architecture 600 illustrated in FIG. 6 includes a centralprocessing unit 602 (“CPU”), a system memory 604, including a randomaccess memory 606 (“RAM”) and a read-only memory (“ROM”) 608, and asystem bus 610 that couples the memory 604 to the CPU 602. A basicinput/output system containing the basic routines that help to transferinformation between elements within the computer architecture 600, suchas during startup, is stored in the ROM 608. The computer architecture600 further includes a mass storage device 612 for storing an operatingsystem 607, data, such as input data 651, traffic data 652, historicaldata 654, map data 656, camera metadata 660, camera image data 662, andone or more application programs (description here doesn't match FIG.6).

The mass storage device 612 is connected to the CPU 602 through a massstorage controller (not shown) connected to the bus 610. The massstorage device 612 and its associated computer-readable media providenon-volatile storage for the computer architecture 600. Although thedescription of computer-readable media contained herein refers to a massstorage device, such as a solid state drive, a hard disk or CD-ROMdrive, it should be appreciated by those skilled in the art thatcomputer-readable media can be any available computer storage media orcommunication media that can be accessed by the computer architecture600.

Communication media includes computer readable instructions, datastructures, program modules, or other data in a modulated data signalsuch as a carrier wave or other transport mechanism and includes anydelivery media. The term “modulated data signal” means a signal that hasone or more of its characteristics changed or set in a manner so as toencode information in the signal. By way of example, and not limitation,communication media includes wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, RF,infrared and other wireless media. Combinations of any of the aboveshould also be included within the scope of computer-readable media.

By way of example, and not limitation, computer storage media mayinclude volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology for storage of information suchas computer-readable instructions, data structures, program modules orother data. For example, computer media includes, but is not limited to,RAM, ROM, EPROM, EEPROM, flash memory or other solid state memorytechnology, CD-ROM, digital versatile disks (“DVD”), HD-DVD, BLU-RAY, orother optical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed bythe computer architecture 600. For purposes the claims, the phrase“computer storage medium,” “computer-readable storage medium” andvariations thereof, does not include waves, signals, and/or othertransitory and/or intangible communication media, per se.

According to various configurations, the computer architecture 600 mayoperate in a networked environment using logical connections to remotecomputers through the network 756 and/or another network (not shown).The computer architecture 600 may connect to the network 756 through anetwork interface unit 614 connected to the bus 610. It should beappreciated that the network interface unit 614 also may be utilized toconnect to other types of networks and remote computer systems. Thecomputer architecture 600 also may include an input/output controller616 for receiving and processing input from a number of other devices,including a keyboard, mouse, or electronic stylus (not shown in FIG. 6).Similarly, the input/output controller 616 may provide output to adisplay screen, a printer, or other type of output device (also notshown in FIG. 6).

It should be appreciated that the software components described hereinmay, when loaded into the CPU 602 and executed, transform the CPU 602and the overall computer architecture 600 from a general-purposecomputing system into a special-purpose computing system customized tofacilitate the functionality presented herein. The CPU 602 may beconstructed from any number of transistors or other discrete circuitelements, which may individually or collectively assume any number ofstates. More specifically, the CPU 602 may operate as a finite-statemachine, in response to executable instructions contained within thesoftware modules disclosed herein. These computer-executableinstructions may transform the CPU 602 by specifying how the CPU 602transitions between states, thereby transforming the transistors orother discrete hardware elements constituting the CPU 602.

Encoding the software modules presented herein also may transform thephysical structure of the computer-readable media presented herein. Thespecific transformation of physical structure may depend on variousfactors, in different implementations of this description. Examples ofsuch factors may include, but are not limited to, the technology used toimplement the computer-readable media, whether the computer-readablemedia is characterized as primary or secondary storage, and the like.For example, if the computer-readable media is implemented assemiconductor-based memory, the software disclosed herein may be encodedon the computer-readable media by transforming the physical state of thesemiconductor memory. For example, the software may transform the stateof transistors, capacitors, or other discrete circuit elementsconstituting the semiconductor memory. The software also may transformthe physical state of such components in order to store data thereupon.

As another example, the computer-readable media disclosed herein may beimplemented using magnetic or optical technology. In suchimplementations, the software presented herein may transform thephysical state of magnetic or optical media, when the software isencoded therein. These transformations may include altering the magneticcharacteristics of particular locations within given magnetic media.These transformations also may include altering the physical features orcharacteristics of particular locations within given optical media, tochange the optical characteristics of those locations. Othertransformations of physical media are possible without departing fromthe scope and spirit of the present description, with the foregoingexamples provided only to facilitate this discussion.

In light of the above, it should be appreciated that many types ofphysical transformations take place in the computer architecture 600 inorder to store and execute the software components presented herein. Italso should be appreciated that the computer architecture 600 mayinclude other types of computing devices, including hand-held computers,embedded computer systems, personal digital assistants, and other typesof computing devices known to those skilled in the art. It is alsocontemplated that the computer architecture 600 may not include all ofthe components shown in FIG. 6, may include other components that arenot explicitly shown in FIG. 6, or may utilize an architecturecompletely different than that shown in FIG. 6.

FIG. 7 depicts an illustrative distributed computing environment 700capable of executing the software components described herein forenabling selection of traffic cameras for display to a user. Thus, thedistributed computing environment 700 illustrated in FIG. 7 can beutilized to execute any aspects of the software components presentedherein. For example, the distributed computing environment 700 can beutilized to execute aspects of the software components described herein.

According to various implementations, the distributed computingenvironment 700 includes a computing environment 702 operating on, incommunication with, or as part of the network 704. The network 704 maybe or may include the network 756, described above. The network 704 alsocan include various access networks. One or more client devices706A-706N (hereinafter referred to collectively and/or generically as“clients 706”) can communicate with the computing environment 702 viathe network 704 and/or other connections (not illustrated in FIG. 7). Inone illustrated configuration, the clients 706 include a computingdevice 706A such as a laptop computer, a desktop computer, or othercomputing device; a slate or tablet computing device (“tablet computingdevice”) 706B; a mobile computing device 706C such as a mobiletelephone, a smart phone, an on-board computer, or other mobilecomputing device; a server computer 706D; and/or other devices 706N. Itshould be understood that any number of devices 706 can communicate withthe computing environment 702. Two example computing architectures forthe devices 706 are illustrated and described herein with reference toFIGS. 6 and 8. It should be understood that the illustrated devices 706and computing architectures illustrated and described herein areillustrative ony, and should not be construed as being limited in anyway.

In the illustrated configuration, the computing environment 702 includesapplication servers 708, data storage 710, and one or more networkinterfaces 712. According to various implementations, the functionalityof the application servers 708 can be provided by one or more servercomputers that are executing as part of, or in communication with, thenetwork 704. The application servers 708 can host various services,virtual machines, portals, and/or other resources. In the illustratedconfiguration, the application servers 708 host one or more virtualmachines 714 for hosting applications or other functionality. Accordingto various implementations, the virtual machines 714 host one or moreapplications and/or software modules for enabling selection of trafficcameras for display to a user. It should be understood that thisconfiguration is illustrative only, and should not be construed as beinglimiting in any way. The application servers 708 also host or provideaccess to one or more portals, link pages, Web sites, and/or otherinformation (“Web portals”) 716.

According to various implementations, the application servers 708 alsoinclude one or more mailbox services 718 and one or more messagingservices 720. The mailbox services 718 can include electronic mail(“email”) services. The mailbox services 718 also can include variouspersonal information management (“PIM”) services including, but notlimited to, calendar services, contact management services,collaboration services, and/or other services. The messaging services720 can include, but are not limited to, instant messaging services,chat services, forum services, and/or other communication services.

The application servers 708 also may include one or more socialnetworking services 722. The social networking services 722 can includevarious social networking services including, but not limited to,services for sharing or posting status updates, instant messages, links,photos, videos, and/or other information; services for commenting ordisplaying interest in articles, products, blogs, or other resources;and/or other services. In some configurations, the social networkingservices 722 are provided by or include the FACEBOOK social networkingservice, the LINKEDIN professional networking service, the MYSPACEsocial networking service, the FOURSQUARE geographic networking service,the YAMMER office colleague networking service, and the like. In otherconfigurations, the social networking services 722 are provided by otherservices, sites, and/or providers that may or may not be explicitlyknown as social networking providers. For example, some web sites allowusers to interact with one another via email, chat services, and/orother means during various activities and/or contexts such as readingpublished articles, commenting on goods or services, publishing,collaboration, gaming, and the like. Examples of such services include,but are not limited to, the WINDOWS LIVE service and the XBOX LIVEservice from Microsoft Corporation in Redmond, Wash. Other services arepossible and are contemplated.

The social networking services 722 also can include commenting,blogging, and/or micro blogging services. Examples of such servicesinclude, but are not limited to, the YELP commenting service, the KUDZUreview service, the OFFICETALK enterprise micro blogging service, theTWITTER messaging service, the GOOGLE BUZZ service, and/or otherservices. It should be appreciated that the above lists of services arenot exhaustive and that numerous additional and/or alternative socialnetworking services 722 are not mentioned herein for the sake ofbrevity. As such, the above configurations are illustrative, and shouldnot be construed as being limited in any way. According to variousimplementations, the social networking services 722 may host one or moreapplications and/or software modules for providing the functionalitydescribed herein for selecting traffic cameras for display to a user.For instance, any one of the application servers 708 may communicate orfacilitate the functionality and features described herein. Forinstance, a social networking application, mail client, messaging clientor a browser running on a mobile telephone or any other client 706 maycommunicate with a networking service 722 and facilitate thefunctionality, even in part, described above with respect to FIG. 7.

As shown in FIG. 7, the application servers 708 also can host otherservices, applications, portals, and/or other resources (“otherresources”) 724. The other resources 724 can include, but are notlimited to, document sharing, rendering, or any other functionality. Itthus can be appreciated that the computing environment 702 can provideintegration of the concepts and technologies disclosed herein withvarious mailbox, messaging, social networking, and/or other services orresources.

As mentioned above, the computing environment 702 can include datastorage 710. According to various implementations, the functionality ofthe data storage 710 is provided by one or more databases operating on,or in communication with, the network 704. The functionality of the datastorage 710 also can be provided by one or more server computersconfigured to host data for the computing environment 702. The datastorage 710 can include, host, or provide one or more real or virtualdata stores 726A-726N (hereinafter referred to collectively and/orgenerically as “datastores 726”). The datastores 726 are configured tohost data used or created by the application servers 708 and/or otherdata. Although not illustrated in FIG. 7, the datastores 726 also canhost or store web page documents, word documents, presentationdocuments, data structures, algorithms for execution by a recommendationengine, and/or other data utilized by any application program or anothermodule. Aspects of the datastores 726 may be associated with a servicefor storing files.

The computing environment 702 can communicate with, or be accessed by,the network interfaces 712. The network interfaces 712 can includevarious types of network hardware and software for supportingcommunications between two or more computing devices including, but notlimited to, the clients 706 and the application servers 708. It shouldbe appreciated that the network interfaces 712 also may be utilized toconnect to other types of networks and/or computer systems.

It should be understood that the distributed computing environment 700described herein can provide any aspects of the software elementsdescribed herein with any number of virtual computing resources and/orother distributed computing functionality that can be configured toexecute any aspects of the software components disclosed herein.According to various implementations of the concepts and technologiesdisclosed herein, the distributed computing environment 700 provides thesoftware functionality described herein as a service to the clientsusing devices 706. It should be understood that the devices 706 caninclude real or virtual machines including, but not limited to, servercomputers, web servers, personal computers, mobile computing devices,smart phones, and/or other devices. As such, various configurations ofthe concepts and technologies disclosed herein enable any deviceconfigured to access the distributed computing environment 700 toutilize the functionality described herein for enabling selection oftraffic cameras for display to a user, among other aspects.

Turning now to FIG. 8, an illustrative computing device architecture 800for a computing device that is capable of executing various softwarecomponents is described herein for enabling selection of traffic camerasfor display to a user. The computing device architecture 800 isapplicable to computing devices that facilitate mobile computing due, inpart, to form factor, wireless connectivity, and/or battery-poweredoperation. In some configurations, the computing devices include, butare not limited to, mobile telephones, on-board computers, tabletdevices, slate devices, portable video game devices, and the like. Thecomputing device architecture 800 is applicable to any of the clients706 shown in FIG. 7. Moreover, aspects of the computing devicearchitecture 800 may be applicable to traditional desktop computers,portable computers (e.g., laptops, notebooks, ultra-portables, andnetbooks), server computers, and other computer systems, such asdescribed herein with reference to FIG. 5. For example, the single touchand multi-touch aspects disclosed herein below may be applied to desktopcomputers that utilize a touchscreen or some other touch-enabled device,such as a touch-enabled track pad or touch-enabled mouse.

The computing device architecture 800 illustrated in FIG. 8 includes aprocessor 802, memory components 804, network connectivity components806, sensor components 808, input/output components 810, and powercomponents 812. In the illustrated configuration, the processor 802 isin communication with the memory components 804, the networkconnectivity components 806, the sensor components 808, the input/output(“I/O”) components 810, and the power components 812. Although noconnections are shown between the individual components illustrated inFIG. 8, the components can interact to carry out device functions. Insome configurations, the components are arranged so as to communicatevia one or more busses (not shown).

The processor 802 includes a central processing unit (“CPU”) configuredto process data, execute computer-executable instructions of one or moreapplication programs, and communicate with other components of thecomputing device architecture 800 in order to perform variousfunctionality described herein. The processor 802 may be utilized toexecute aspects of the software components presented herein and,particularly, those that utilize, at least in part, a touch-enabledinput.

In some configurations, the processor 802 includes a graphics processingunit (“GPU”) configured to accelerate operations performed by the CPU,including, but not limited to, operations performed by executinggeneral-purpose scientific and/or engineering computing applications, aswell as graphics-intensive computing applications such as highresolution video (e.g., 720P, 1080P, and higher resolution), videogames, three-dimensional (“3D”) modeling applications, and the like. Insome configurations, the processor 802 is configured to communicate witha discrete GPU (not shown). In any case, the CPU and GPU may beconfigured in accordance with a co-processing CPU/GPU computing model,wherein the sequential part of an application executes on the CPU andthe computationally-intensive part is accelerated by the GPU.

In some configurations, the processor 802 is, or is included in, asystem-on-chip (“SoC”) along with one or more of the other componentsdescribed herein below. For example, the SoC may include the processor802, a GPU, one or more of the network connectivity components 806, andone or more of the sensor components 808. In some configurations, theprocessor 802 is fabricated, in part, utilizing a package-on-package(“PoP”) integrated circuit packaging technique. The processor 802 may bea single core or multi-core processor.

The processor 802 may be created in accordance with an ARM architecture,available for license from ARM HOLDINGS of Cambridge, United Kingdom.Alternatively, the processor 802 may be created in accordance with anx86 architecture, such as is available from INTEL CORPORATION ofMountain View, Calif. and others. In some configurations, the processor802 is a SNAPDRAGON SoC, available from QUALCOMM of San Diego, Calif., aTEGRA SoC, available from NVIDIA of Santa Clara, Calif., a HUMMINGBIRDSoC, available from SAMSUNG of Seoul, South Korea, an Open MultimediaApplication Platform (“OMAP”) SoC, available from TEXAS INSTRUMENTS ofDallas, Tex., a customized version of any of the above SoCs, or aproprietary SoC.

The memory components 804 include a random access memory (“RAM”) 814, aread-only memory (“ROM”) 816, an integrated storage memory (“integratedstorage”) 818, and a removable storage memory (“removable storage”) 820.In some configurations, the RAM 814 or a portion thereof, the ROM 816 ora portion thereof, and/or some combination of the RAM 814 and the ROM816 is integrated in the processor 802. In some configurations, the ROM816 is configured to store a firmware, an operating system or a portionthereof (e.g., operating system kernel), and/or a bootloader to load anoperating system kernel from the integrated storage 818 and/or theremovable storage 820.

The integrated storage 818 can include a solid-state memory, a harddisk, or a combination of solid-state memory and a hard disk. Theintegrated storage 818 may be soldered or otherwise connected to a logicboard upon which the processor 802 and other components described hereinalso may be connected. As such, the integrated storage 818 is integratedin the computing device. The integrated storage 818 is configured tostore an operating system or portions thereof, application programs,data, and other software components described herein.

The removable storage 820 can include a solid-state memory, a hard disk,or a combination of solid-state memory and a hard disk. In someconfigurations, the removable storage 820 is provided in lieu of theintegrated storage 818. In other configurations, the removable storage820 is provided as additional optional storage. In some configurations,the removable storage 820 is logically combined with the integratedstorage 818 such that the total available storage is made available as atotal combined storage capacity. In some configurations, the totalcombined capacity of the integrated storage 818 and the removablestorage 820 is shown to a user instead of separate storage capacitiesfor the integrated storage 818 and the removable storage 820.

The removable storage 820 is configured to be inserted into a removablestorage memory slot (not shown) or other mechanism by which theremovable storage 820 is inserted and secured to facilitate a connectionover which the removable storage 820 can communicate with othercomponents of the computing device, such as the processor 802. Theremovable storage 820 may be embodied in various memory card formatsincluding, but not limited to, PC card, CompactFlash card, memory stick,secure digital (“SD”), miniSD, microSD, universal integrated circuitcard (“UICC”) (e.g., a subscriber identity module (“SIM”) or universalSIM (“USIM”)), a proprietary format, or the like.

It can be understood that one or more of the memory components 804 canstore an operating system. According to various configurations, theoperating system includes, but is not limited to WINDOWS MOBILE OS fromMicrosoft Corporation of Redmond, Wash., WINDOWS PHONE OS from MicrosoftCorporation, WINDOWS from Microsoft Corporation, PALM WEBOS fromHewlett-Packard Company of Palo Alto, Calif., BLACKBERRY OS fromResearch In Motion Limited of Waterloo, Ontario, Canada, IOS from AppleInc. of Cupertino, Calif., and ANDROID OS from Google Inc. of MountainView, Calif. Other operating systems are contemplated.

The network connectivity components 806 include a wireless wide areanetwork component (“WWAN component”) 822, a wireless local area networkcomponent (“WLAN component”) 824, and a wireless personal area networkcomponent (“WPAN component”) 826. The network connectivity components806 facilitate communications to and from the network 856 or anothernetwork, which may be a WWAN, a WLAN, or a WPAN. Although only thenetwork 856 is illustrated, the network connectivity components 806 mayfacilitate simultaneous communication with multiple networks, includingthe network 756 of FIG. 6. For example, the network connectivitycomponents 806 may facilitate simultaneous communications with multiplenetworks via one or more of a WWAN, a WLAN, or a WPAN.

The network 856 may be or may include a WWAN, such as a mobiletelecommunications network utilizing one or more mobiletelecommunications technologies to provide voice and/or data services toa computing device utilizing the computing device architecture 800 viathe WWAN component 822. The mobile telecommunications technologies caninclude, but are not limited to, Global System for Mobile communications(“GSM”), Code Division Multiple Access (“CDMA”) ONE, CDMA7000, UniversalMobile Telecommunications System (“UMTS”), Long Term Evolution (“LTE”),and Worldwide Interoperability for Microwave Access (“WiMAX”). Moreover,the network 856 may utilize various channel access methods (which may ormay not be used by the aforementioned standards) including, but notlimited to, Time Division Multiple Access (“TDMA”), Frequency DivisionMultiple Access (“FDMA”), CDMA, wideband CDMA (“W-CDMA”), OrthogonalFrequency Division Multiplexing (“OFDM”), Space Division Multiple Access(“SDMA”), and the like. Data communications may be provided usingGeneral Packet Radio Service (“GPRS”), Enhanced Data rates for GlobalEvolution (“EDGE”), the High-Speed Packet Access (“HSPA”) protocolfamily including High-Speed Downlink Packet Access (“HSDPA”), EnhancedUplink (“EUL”) or otherwise termed High-Speed Uplink Packet Access(“HSUPA”), Evolved HSPA (“HSPA+”), LTE, and various other current andfuture wireless data access standards. The network 856 may be configuredto provide voice and/or data communications with any combination of theabove technologies. The network 856 may be configured to or be adaptedto provide voice and/or data communications in accordance with futuregeneration technologies.

In some configurations, the WWAN component 822 is configured to providedual- multi-mode connectivity to the network 856. For example, the WWANcomponent 822 may be configured to provide connectivity to the network856, wherein the network 856 provides service via GSM and UMTStechnologies, or via some other combination of technologies.Alternatively, multiple WWAN components 822 may be utilized to performsuch functionality, and/or provide additional functionality to supportother non-compatible technologies (i.e., incapable of being supported bya single WWAN component). The WWAN component 822 may facilitate similarconnectivity to multiple networks (e.g., a UMTS network and an LTEnetwork).

The network 856 may be a WLAN operating in accordance with one or moreInstitute of Electrical and Electronic Engineers (“IEEE”) 802.11standards, such as IEEE 802.11a, 802.11b, 802.11g, 802.11n, and/orfuture 802.11 standard (referred to herein collectively as WI-FI). Draft802.11 standards are also contemplated. In some configurations, the WLANis implemented utilizing one or more wireless WI-FI access points. Insome configurations, one or more of the wireless WI-FI access points areanother computing device with connectivity to a WWAN that arefunctioning as a WI-FI hotspot. The WLAN component 824 is configured toconnect to the network 856 via the WI-FI access points. Such connectionsmay be secured via various encryption technologies including, but notlimited to, WI-FI Protected Access (“WPA”), WPA2, Wired EquivalentPrivacy (“WEP”), and the like.

The network 856 may be a WPAN operating in accordance with Infrared DataAssociation (“IrDA”), BLUETOOTH, wireless Universal Serial Bus (“USB”),Z-Wave, ZIGBEE, or some other short-range wireless technology. In someconfigurations, the WPAN component 826 is configured to facilitatecommunications with other devices, such as peripherals, computers, orother computing devices via the WPAN.

The sensor components 808 include a magnetometer 828, an ambient lightsensor 830, a proximity sensor 832, an accelerometer 834, a gyroscope836, and a Global Positioning System sensor (“GPS sensor”) 838. It iscontemplated that other sensors, such as, but not limited to,temperature sensors or shock detection sensors, also may be incorporatedin the computing device architecture 800.

The magnetometer 828 is configured to measure the strength and directionof a magnetic field. In some configurations the magnetometer 828provides measurements to a compass application program stored within oneof the memory components 804 in order to provide a user with accuratedirections in a frame of reference including the cardinal directions,north, south, east, and west. Similar measurements may be provided to anavigation application program that includes a compass component. Otheruses of measurements obtained by the magnetometer 828 are contemplated.

The ambient light sensor 830 is configured to measure ambient light. Insome configurations, the ambient light sensor 830 provides measurementsto an application program stored within one of the memory components 804in order to automatically adjust the brightness of a display (describedbelow) to compensate for low-light and high-light environments. Otheruses of measurements obtained by the ambient light sensor 830 arecontemplated.

The proximity sensor 832 is configured to detect the presence of anobject or thing in proximity to the computing device without directcontact. In some configurations, the proximity sensor 832 detects thepresence of a user's body (e.g., the user's face) and provides thisinformation to an application program stored within one of the memorycomponents 804 that utilizes the proximity information to enable ordisable some functionality of the computing device. For example, atelephone application program may automatically disable a touchscreen(described below) in response to receiving the proximity information sothat the user's face does not inadvertently end a call or enable/disableother functionality within the telephone application program during thecall. Other uses of proximity as detected by the proximity sensor 832are contemplated.

The accelerometer 834 is configured to measure proper acceleration. Insome configurations, output from the accelerometer 834 is used by anapplication program as an input mechanism to control some functionalityof the application program. For example, the application program may bea video game in which a character, a portion thereof, or an object ismoved or otherwise manipulated in response to input received via theaccelerometer 834. In some configurations, output from the accelerometer834 is provided to an application program for use in switching betweenlandscape and portrait modes, calculating coordinate acceleration, ordetecting a fall. Other uses of the accelerometer 834 are contemplated.

The gyroscope 836 is configured to measure and maintain orientation. Insome configurations, output from the gyroscope 836 is used by anapplication program as an input mechanism to control some functionalityof the application program. For example, the gyroscope 836 can be usedfor accurate recognition of movement within a 3D environment of a videogame application or some other application. In some configurations, anapplication program utilizes output from the gyroscope 836 and theaccelerometer 834 to enhance control of some functionality of theapplication program. Other uses of the gyroscope 836 are contemplated.

The GPS sensor 838 is configured to receive signals from GPS satellitesfor use in calculating a location. The location calculated by the GPSsensor 838 may be used by any application program that requires orbenefits from location information. For example, the location calculatedby the GPS sensor 838 may be used with a navigation application programto provide directions from the location to a destination or directionsfrom the destination to the location. Moreover, the GPS sensor 838 maybe used to provide location information to an external location-basedservice, such as E911 service. The GPS sensor 838 may obtain locationinformation generated via WI-FI, WIMAX, and/or cellular triangulationtechniques utilizing one or more of the network connectivity components806 to aid the GPS sensor 838 in obtaining a location fix. The GPSsensor 838 may also be used in Assisted GPS (“A-GPS”) systems.

The I/O components 810 include a display 840, a touchscreen 842, a dataI/O interface component (“data I/O”) 844, an audio I/O interfacecomponent (“audio I/O”) 846, a video I/O interface component (“videoI/O”) 848, and a camera 850. In some configurations, the display 840 andthe touchscreen 842 are combined. In some configurations two or more ofthe data I/O component 844, the audio I/O component 846, and the videoI/O component 848 are combined. The I/O components 810 may includediscrete processors configured to support the various interfacesdescribed below, or may include processing functionality built-in to theprocessor 802.

The display 840 is an output device configured to present information ina visual form. In particular, the display 840 may present graphical userinterface (“GUI”) elements, text, images, video, notifications, virtualbuttons, virtual keyboards, messaging data, Internet content, devicestatus, time, date, calendar data, preferences, map information,location information, and any other information that is capable of beingpresented in a visual form. In some configurations, the display 840 is aliquid crystal display (“LCD”) utilizing any active or passive matrixtechnology and any backlighting technology (if used). In someconfigurations, the display 840 is an organic light emitting diode(“OLED”) display. Other display types are contemplated.

The touchscreen 842, also referred to herein as a “touch-enabledscreen,” is an input device configured to detect the presence andlocation of a touch. The touchscreen 842 may be a resistive touchscreen,a capacitive touchscreen, a surface acoustic wave touchscreen, aninfrared touchscreen, an optical imaging touchscreen, a dispersivesignal touchscreen, an acoustic pulse recognition touchscreen, or mayutilize any other touchscreen technology. In some configurations, thetouchscreen 842 is incorporated on top of the display 840 as atransparent layer to enable a user to use one or more touches tointeract with objects or other information presented on the display 840.In other configurations, the touchscreen 842 is a touch pad incorporatedon a surface of the computing device that does not include the display840. For example, the computing device may have a touchscreenincorporated on top of the display 840 and a touch pad on a surfaceopposite the display 840.

In some configurations, the touchscreen 842 is a single-touchtouchscreen. In other configurations, the touchscreen 842 is amulti-touch touchscreen. In some configurations, the touchscreen 842 isconfigured to detect discrete touches, single touch gestures, and/ormulti-touch gestures. These are collectively referred to herein asgestures for convenience. Several gestures will now be described. Itshould be understood that these gestures are illustrative only and arenot intended to limit the scope of the appended claims. Moreover, thedescribed gestures, additional gestures, and/or alternative gestures maybe implemented in software for use with the touchscreen 842. As such, adeveloper may create gestures that are specific to a particularapplication program.

In some configurations, the touchscreen 842 supports a tap gesture inwhich a user taps the touchscreen 842 once on an item presented on thedisplay 840. The tap gesture may be used for various reasons including,but not limited to, opening or launching whatever the user taps. In someconfigurations, the touchscreen 842 supports a double tap gesture inwhich a user taps the touchscreen 842 twice on an item presented on thedisplay 840. The double tap gesture may be used for various reasonsincluding, but not limited to, zooming in or zooming out in stages. Insome configurations, the touchscreen 842 supports a tap and hold gesturein which a user taps the touchscreen 842 and maintains contact for atleast a pre-defined time. The tap and hold gesture may be used forvarious reasons including, but not limited to, opening acontext-specific menu.

In some configurations, the touchscreen 842 supports a pan gesture inwhich a user places a finger on the touchscreen 842 and maintainscontact with the touchscreen 842 while moving the finger on thetouchscreen 842. The pan gesture may be used for various reasonsincluding, but not limited to, moving through screens, images, or menusat a controlled rate. Multiple finger pan gestures are alsocontemplated. In some configurations, the touchscreen 842 supports aflick gesture in which a user swipes a finger in the direction the userwants the screen to move. The flick gesture may be used for variousreasons including, but not limited to, scrolling horizontally orvertically through menus or pages. In some configurations, thetouchscreen 842 supports a pinch and stretch gesture in which a usermakes a pinching motion with two fingers (e.g., thumb and forefinger) onthe touchscreen 842 or moves the two fingers apart. The pinch andstretch gesture may be used for various reasons including, but notlimited to, zooming gradually in or out of a web site, map, or picture.

Although the above gestures have been described with reference to theuse one or more fingers for performing the gestures, other appendagessuch as toes or objects such as styluses may be used to interact withthe touchscreen 842. As such, the above gestures should be understood asbeing illustrative only and should not be construed as being limiting inany way.

The data I/O interface component 844 is configured to facilitate inputof data to the computing device and output of data from the computingdevice. In some configurations, the data I/O interface component 844includes a connector configured to provide wired connectivity betweenthe computing device and a computer system, for example, forsynchronization operation purposes. The connector may be a proprietaryconnector or a standardized connector such as USB, micro-USB, mini-USB,or the like. In some configurations, the connector is a dock connectorfor docking the computing device with another device such as a dockingstation, audio device (e.g., a digital music player), or video device.

The audio I/O interface component 846 is configured to provide audioinput and/or output capabilities to the computing device. In someconfigurations, the audio I/O interface component 846 includes amicrophone configured to collect audio signals. In some configurations,the audio I/O interface component 846 includes a headphone jackconfigured to provide connectivity for headphones or other externalspeakers. In some configurations, the audio I/O interface component 846includes a speaker for the output of audio signals. In someconfigurations, the audio I/O interface component 846 includes anoptical audio cable out.

The video I/O interface component 848 is configured to provide videoinput and/or output capabilities to the computing device. In someconfigurations, the video I/O interface component 848 includes a videoconnector configured to receive video as input from another device(e.g., a video media player such as a DVD or BLURAY player) or sendvideo as output to another device (e.g., a monitor, a television, orsome other external display). In some configurations, the video I/Ointerface component 848 includes a High-Definition Multimedia Interface(“HDMI”), mini-HDMI, micro-HDMI, DisplayPort, or proprietary connectorto input/output video content. In some configurations, the video I/Ointerface component 848 or portions thereof is combined with the audioI/O interface component 846 or portions thereof.

The camera 850 can be configured to capture still images and/or video.The camera 850 may utilize a charge coupled device (“CCD”) or acomplementary metal oxide semiconductor (“CMOS”) image sensor to captureimages. In some configurations, the camera 850 includes a flash to aidin taking pictures in low-light environments. Settings for the camera850 may be implemented as hardware or software buttons.

Although not illustrated, one or more hardware buttons may also beincluded in the computing device architecture 800. The hardware buttonsmay be used for controlling some operational aspects of the computingdevice. The hardware buttons may be dedicated buttons or multi-usebuttons. The hardware buttons may be mechanical or sensor-based.

The illustrated power components 812 include one or more batteries 852,which can be connected to a battery gauge 854. The batteries 852 may berechargeable or disposable. Rechargeable battery types include, but arenot limited to, lithium polymer, lithium ion, nickel cadmium, and nickelmetal hydride. Each of the batteries 852 may be made of one or morecells.

The battery gauge 854 can be configured to measure battery parameterssuch as current, voltage, and temperature. In some configurations, thebattery gauge 854 is configured to measure the effect of a battery'sdischarge rate, temperature, age and other factors to predict remaininglife within a certain percentage of error. In some configurations, thebattery gauge 854 provides measurements to an application program thatis configured to utilize the measurements to present useful powermanagement data to a user. Power management data may include one or moreof a percentage of battery used, a percentage of battery remaining, abattery condition, a remaining time, a remaining capacity (e.g., in watthours), a current draw, and a voltage.

The power components 812 may also include a power connector, which maybe combined with one or more of the aforementioned I/O components 810.The power components 812 may interface with an external power system orcharging equipment via an I/O component.

In closing, although the various configurations have been described inlanguage specific to structural features and/or methodological acts, itis to be understood that the subject matter defined in the appendedrepresentations is not necessarily limited to the specific features oracts described. Rather, the specific features and acts are disclosed asexample forms of implementing the claimed subject matter.

The present disclosure is made in light of the following examples:

Example 1: A computer-implemented method comprising: determining (404),at a computing device (800), a primary route (310) and a first alternateroute (312); determining (406), at the computing device, at least afirst intersection (320) between the primary route (310) and the firstalternate route (312); obtaining (410), at the computing device (800),camera metadata (324, 334, 344) identifying a plurality of cameras (322,332, 342), wherein the camera metadata defines at least one ofpositioning data, direction, status data, and image data for individualcameras of the plurality of cameras; determining (504), at the computingdevice, a priority score for individual cameras of the plurality ofcameras using the camera metadata, the priority score being based, atleast in part, on proximity to the first intersection between theprimary route and the first alternate route; selecting (412), at thecomputing device, at least one camera of the plurality of cameras basedon the priority score of the camera; and communicating (414), from thecomputing device to a client computing device, selection data definingthe at least one camera, the selection data causing the client computingdevice to receive image data of the at least one camera for display on adisplay device.

Example 2: The computer-implemented method of Example 1, wherein thefirst intersection between the primary route and the first alternateroute further comprises a first intersection encountered along theprimary route in a direction of travel from a starting point of theprimary route toward a destination point of the primary route.

Example 3: The computer-implemented method of any of the above Examples,wherein the first intersection between the primary route and the firstalternate route further comprises a next intersection encountered alongthe primary route in a direction of travel from a current location onthe primary route toward a destination point of the primary route.

Example 4: The computer-implemented method of any of the above Examples,the method further including: determining (404), at a computing device,a second alternate route (314); determining (406), at the computingdevice, at least a first intersection (330) between the primary routeand the second alternate route; determining (504), at the computingdevice, a priority score for individual cameras (332) of the pluralityof cameras using the camera metadata (334), the priority score beingbased, at least in part, on proximity to the first intersection betweenthe primary route and the second alternate route; selecting (412), atthe computing device, at least one other camera of the plurality ofcameras (332) based on the priority score of the camera based, at leastin part, on proximity to the first intersection between the primaryroute and the second alternate route; and communicating (414), at thecomputing device, imaged data of the at least one other camera fordisplay on a display device.

Example 5: The computer-implemented method of any of the above Examples,wherein the step of determining (504), at the computing device, apriority score for individual cameras of the plurality of cameras usingthe camera metadata, the priority score being based, at least in part,on proximity to the first intersection between the primary route and thefirst alternate route includes further basing the priority score on atleast one of camera orientation, position before or after the firstintersection, operational status, image quality, type of intersection,time stamp, type of image, individual user history, crowdsourcedhistory, traffic data and historical performance.

Example 6: The computer-implemented method of any of the above Examples,wherein determining a priority score for individual cameras includesdetermining a priority score for individual cameras using a weightingfactor for each of the proximity to the first intersection and the oneor more of camera orientation, position before or after the firstintersection, operational status, image quality, type of intersection,time stamp, type of image, individual user history, crowdsourcedhistory, traffic data and historical performance.

Example 7: The computer-implemented method of any of the above Examples,wherein the scoring relating to the type of intersection distinguishesbetween whether the intersection has a stop sign, a traffic light, anon-ramp, a left turn signal, or a right turn lane.

Example 8: The computer-implemented method of any of the above Examples,wherein one of the primary and first alternate routes is determinedbased on user historical data.

Example 9: The computer-implemented method of any of the above Examples,wherein one of the primary and first alternate routes is determinedbased on user historical data.

Example 10: A system (800), the system (800) comprising: a processor(802); a display; and a memory (804) in communication with the processor(802), the memory (802) having computer-readable instructions storedthereupon that, when executed by the processor (802), cause theprocessor (802) to perform a method comprising: determining (404) aprimary route (310) and a first alternate route (318); determining (406)at least a first intersection (320) between the primary route (310) andthe first alternate route (318); obtaining (410) camera metadataidentifying a plurality of cameras (322, 332, 342), wherein the camerametadata defines at least one of positioning data, direction, statusdata, and image data for individual cameras of the plurality of cameras(324, 334, 344); determining (504) a priority score for individualcameras of the plurality of cameras using the camera metadata, where thepriority score is based, at least in part, on proximity to the firstintersection between the primary route and the first alternate route;selecting (412) at least one camera of the plurality of cameras based onthe priority score of the camera; and receiving (414) image datagenerated by the at least one camera for rendering the image data on thedisplay.

Example 11: The system of any of the above Examples, wherein the firstintersection between the primary route and the first alternate routefurther comprises a first intersection encountered along the primaryroute in a direction of travel from a starting point of the primaryroute toward a destination point of the primary route.

Example 12: The system of any of the above Examples, wherein the firstintersection between the primary route and the first alternate routefurther comprises a next intersection encountered along the primaryroute in a direction of travel from a current location on the primaryroute toward a destination point of the primary route.

Example 13: The system of any of the above Examples, wherein the methodfurther comprises: determining (404) a second alternate route (314);determining (406) at least a first intersection (330) between theprimary route and the second alternate route; determining (504) apriority score for individual cameras of the plurality of cameras usingthe camera metadata, the priority score being based, at least in part,on proximity to the first intersection between the primary route and thesecond alternate route; selecting (412) at least one other camera (332)of the plurality of cameras based on the priority score of the camerabased, at least in part, on proximity to the first intersection betweenthe primary route and the second alternate route; and receiving (414)image data generated by the at least one other camera for rendering theimage data on the display.

Example 14: The system of any of the above Examples, wherein the step ofdetermining a priority score for individual cameras of the plurality ofcameras using the camera metadata, where the priority score is based, atleast in part, on proximity to the first intersection between theprimary route and the first alternate route includes further basing thepriority score on at least one of camera orientation, position before orafter the first intersection, operational status, image quality, type ofintersection, time stamp, type of image, individual user history,crowdsourced history, traffic data and historical performance

Example 15: The system of any of the above Examples, wherein determininga priority score for individual cameras includes determining a priorityscore for individual cameras using a weighting factor for each of theproximity to the first intersection and the one or more of cameraorientation, position before or after the first intersection,operational status, image quality, type of intersection, time stamp,type of image, individual user history, crowdsourced history, trafficdata, or data defining a historical performance of one or more routes.

Example 16: A computer storage medium having computer executableinstructions stored thereon which, when executed by one or moreprocessors, cause the processors to execute a method comprising:determining (404) a primary route (310) and a first alternate route(312); determining (406) at least a first intersection (320) between theprimary route and the first alternate route; obtaining (410) camerametadata (324, 334, 344) identifying a plurality of cameras (322, 332,342), wherein the camera metadata defines at least one of positioningdata, direction, status data, and image data for individual cameras ofthe plurality of cameras; determining (504) a priority score forindividual cameras of the plurality of cameras using the camerametadata, the priority score is based, at least in part, on proximity tothe first intersection between the primary route and the first alternateroute; selecting (412) at least one camera (322) of the plurality ofcameras based on the priority score of the camera; and communicating(414) the selection of the at least one other camera to a clientcomputing device, the selection data causing the client computing deviceto receive image data of the at least one camera for display on adisplay of the client computing device.

Example 17: The computer storage medium of any of the above Examples,wherein the first intersection between the primary route and the firstalternate route further comprises a first intersection encountered alongthe primary route in a direction of travel from a starting point of theprimary route toward a destination point of the primary route.

Example 18: The computer storage medium of any of the above Examples,wherein the first intersection between the primary route and the firstalternate route further comprises a next intersection encountered alongthe primary route in a direction of travel from a current location onthe primary route toward a destination point of the primary route.

Example 19: The computer storage medium of any of the above Examples,wherein the method further comprises: determining (404) a secondalternate route (314); determining (406) at least a first intersection(330) between the primary route and the second alternate route;determining (504) a priority score for individual cameras of theplurality of cameras using the camera metadata, where the priority scoreis based, at least in part, on proximity to the first intersectionbetween the primary route and the second alternate route; selecting(412) at least one other camera (332) of the plurality of cameras basedon the priority score of the camera based, at least in part, onproximity to the first intersection between the primary route and thesecond alternate route; and receiving (414) image data generated by theat least one other camera for rendering the image data on the display.

Example 20: The computer storage medium of any of the above Examples,wherein the step of determining (504) a priority score for individualcameras of the plurality of cameras using the camera metadata, where thepriority score is based, at least in part, on proximity to the firstintersection between the primary route and the first alternate route,and wherein the priority score is further based, at least in part, on atleast one of a camera orientation, a position before or after the firstintersection, an operational status, an image quality, a type ofintersection, a time stamp, a type of image, an individual user history,data defining a crowdsourced history, traffic data, or data defining ahistorical performance of one or more routes.

Example 21: A computer system (800), the system (800) comprising: atleast a first processor (802); and a first memory (804) in communicationwith the first processor (802), the first memory (804) havingcomputer-readable instructions stored thereupon that, when executed bythe first processor (802), cause the first processor (802) to performthe following operations: receive (421) a request from a client devicefor traffic routing information and selection of a number N of trafficcameras for display by the client device; responsive to the request fromthe client device, determine (424), a primary route (310) and a firstalternate route (312); determine (426), at least a first intersection(320) between the primary route (310) and the first alternate route(312); obtain (410) camera metadata (324, 334, 344) identifying aplurality of cameras (322, 332, 342), wherein the camera metadatadefines at least one of positioning data, direction, status data, andimage data for individual cameras of the plurality of cameras; determine(504) a priority score for individual cameras of the plurality ofcameras using the camera metadata, the priority score being based, atleast in part, on proximity to the first intersection between theprimary route and the first alternate route; select (432) N trafficcameras of the plurality of cameras based on the priority score of thecamera; and communicate (434) to the client computing device trafficrouting information including the primary route and the first alternateroute along with selection data defining the N selected cameras.

Example 22: The computer system of any of the above Examples, The systemof claim 21, where the first memory (804) further includes instructionsstored thereupon that, when executed by the first processor (802), causethe first processor (802) to further perform the following: determine(424) a second alternate route (314); determine (426) at least a firstintersection (330) between the primary route and the second alternateroute; determine (504) a priority score for individual cameras of theplurality of cameras using the camera metadata, the priority score beingbased, at least in part, on proximity to the first intersection betweenthe primary route and the second alternate route; select (432) another Ncameras (332) of the plurality of cameras based on the priority score ofeach camera based, at least in part, on proximity to the firstintersection between the primary route and the second alternate route;and communicate (434) to the client computing device traffic routinginformation including the primary route and the second alternate routealong with selection data defining the another N selected cameras.

Example 23: The computer system of any of the above Examples, the systemfurther including a client computer system (800), the client system(800) comprising: at least a second processor (802); a display (200)capable of displaying up to N traffic camera images (202); and a secondmemory (804) in communication with the second processor (802), thesecond memory (804) having computer-readable instructions storedthereupon that, when executed by the second processor (802), cause thesecond processor (802) to perform the following operations: send (452)the request from the client computer system to the first processor fortraffic routing information and selection of a number N of trafficcameras; receive (454) from the first processor traffic routinginformation and selection data for N selected traffic cameras; display aprimary route (310) and a first alternate route (312) from the receivedtraffic routing information; using the received selection data, obtain(460) camera image data (202) for each of the N selected trafficcameras; and display (462) the camera image data for each of the Nselected traffic cameras.

Example 24: A client computer system (800), the client system (800)comprising: at least one processor (802); a display (200) capable ofdisplaying up to N traffic camera images (202); and a memory (804) incommunication with the processor (802), the memory (804) havingcomputer-readable instructions stored thereupon that, when executed bythe processor (802), cause the processor (802) to perform the followingoperations: send (452) a request from a client device for trafficrouting information and selection of a number N of traffic cameras;receive (454) traffic routing information and selection data for Nselected traffic cameras; display a primary route (310) and a firstalternate route (312) from the received traffic routing information;using the received selection data, obtain (460) camera image data (202)for each of the N selected traffic cameras; and display (462) the cameraimage data for each of the N selected traffic cameras.

What is claimed is:
 1. A computer-implemented method comprising:determining, at a computing device, a primary route and a firstalternate route; determining, at the computing device, at least a firstintersection between the primary route and the first alternate route;obtaining, at the computing device, camera metadata identifying aplurality of cameras, wherein the camera metadata defines at least oneof positioning data, direction, status data, and image data forindividual cameras of the plurality of cameras; determining, at thecomputing device, a priority score for individual cameras of theplurality of cameras using the camera metadata, the priority score beingbased, at least in part, on proximity to the first intersection betweenthe primary route and the first alternate route; selecting, at thecomputing device, at least one camera of the plurality of cameras basedon the priority score of the camera; and communicating, from thecomputing device to a client computing device, selection data definingthe at least one camera, the selection data causing the client computingdevice to receive image data of the at least one camera for display on adisplay device.
 2. The method of claim 1, wherein the first intersectionbetween the primary route and the first alternate route furthercomprises a first intersection encountered along the primary route in adirection of travel from a starting point of the primary route toward adestination point of the primary route.
 3. The method of claim 1,wherein the first intersection between the primary route and the firstalternate route further comprises a next intersection encountered alongthe primary route in a direction of travel from a current location onthe primary route toward a destination point of the primary route. 4.The method of claim 1, the method further including: determining, at acomputing device, a second alternate route; determining, at thecomputing device, at least a first intersection between the primaryroute and the second alternate route; determining, at the computingdevice, a priority score for individual cameras of the plurality ofcameras using the camera metadata, the priority score being based, atleast in part, on proximity to the first intersection between theprimary route and the second alternate route; selecting, at thecomputing device, at least one other camera of the plurality of camerasbased on the priority score of the camera based, at least in part, onproximity to the first intersection between the primary route and thesecond alternate route; and communicating, at the computing device,image data of the at least one other camera for display on a displaydevice.
 5. The method of claim 1, wherein the step of determining, atthe computing device, a priority score for individual cameras of theplurality of cameras using the camera metadata, the priority score beingbased, at least in part, on proximity to the first intersection betweenthe primary route and the first alternate route includes further basingthe priority score on at least one of camera orientation, positionbefore or after the first intersection, operational status, imagequality, type of intersection, time stamp, type of image, individualuser history, crowdsourced history, traffic data and historicalperformance.
 6. The method of claim 5, wherein determining a priorityscore for individual cameras includes determining a priority score forindividual cameras using a weighting factor for each of the proximity tothe first intersection and the one or more of camera orientation,position before or after the first intersection, operational status,image quality, type of intersection, time stamp, type of image,individual user history, crowdsourced history, traffic data andhistorical performance.
 7. The method of claim 6, wherein the scoringrelating to the type of intersection distinguishes between whether theintersection has a stop sign, a traffic light, an on-ramp, a left turnsignal, or a right turn lane.
 8. The method of claim 1, wherein one ofthe primary and first alternate routes is determined based on userhistorical data.
 9. The method of claim 1, wherein one of the primaryand first alternate routes is determined based on user historical data.10. A system, the system comprising: a processor; a display; and amemory in communication with the processor, the memory havingcomputer-readable instructions stored thereupon that, when executed bythe processor, cause the processor to perform a method comprising:determining a primary route and a first alternate route; determining atleast a first intersection between the primary route and the firstalternate route; obtaining camera metadata identifying a plurality ofcameras, wherein the camera metadata defines at least one of positioningdata, direction, status data, and image data for individual cameras ofthe plurality of cameras; determining a priority score for individualcameras of the plurality of cameras using the camera metadata, where thepriority score is based, at least in part, on proximity to the firstintersection between the primary route and the first alternate route;selecting at least one camera of the plurality of cameras based on thepriority score of the camera; and receiving image data generated by theat least one camera for rendering the image data on the display.
 11. Thesystem of claim 10, wherein the first intersection between the primaryroute and the first alternate route further comprises a firstintersection encountered along the primary route in a direction oftravel from a starting point of the primary route toward a destinationpoint of the primary route.
 12. The system of claim 10, wherein thefirst intersection between the primary route and the first alternateroute further comprises a next intersection encountered along theprimary route in a direction of travel from a current location on theprimary route toward a destination point of the primary route.
 13. Thesystem of claim 10, wherein the method further comprises: determining asecond alternate route; determining at least a first intersectionbetween the primary route and the second alternate route; determining apriority score for individual cameras of the plurality of cameras usingthe camera metadata, the priority score being based, at least in part,on proximity to the first intersection between the primary route and thesecond alternate route; selecting at least one other camera of theplurality of cameras based on the priority score of the camera based, atleast in part, on proximity to the first intersection between theprimary route and the second alternate route; and receiving image datagenerated by the at least one other camera for rendering the image dataon the display.
 14. The system of claim 10, wherein the step ofdetermining a priority score for individual cameras of the plurality ofcameras using the camera metadata, where the priority score is based, atleast in part, on proximity to the first intersection between theprimary route and the first alternate route includes further basing thepriority score on at least one of camera orientation, position before orafter the first intersection, operational status, image quality, type ofintersection, time stamp, type of image, individual user history,crowdsourced history, traffic data and historical performance.
 15. Thesystem of claim 14, wherein determining a priority score for individualcameras includes determining a priority score for individual camerasusing a weighting factor for each of the proximity to the firstintersection and the one or more of camera orientation, position beforeor after the first intersection, operational status, image quality, typeof intersection, time stamp, type of image, individual user history,crowdsourced history, traffic data, or data defining a historicalperformance of one or more routes.
 16. A computer storage medium havingcomputer executable instructions stored thereon which, when executed byone or more processors, cause the processors to execute a methodcomprising: determining a primary route and a first alternate route;determining at least a first intersection between the primary route andthe first alternate route; obtaining camera metadata identifying aplurality of cameras, wherein the camera metadata defines at least oneof positioning data, direction, status data, and image data forindividual cameras of the plurality of cameras; determining a priorityscore for individual cameras of the plurality of cameras using thecamera metadata, the priority score is based, at least in part, onproximity to the first intersection between the primary route and thefirst alternate route; selecting at least one camera of the plurality ofcameras based on the priority score of the camera; and communicating theselection of the at least one other camera to a client computing device,the selection data causing the client computing device to receive imagedata of the at least one camera for display on a display of the clientcomputing device.
 17. The computer storage medium of claim 16, whereinthe first intersection between the primary route and the first alternateroute further comprises a first intersection encountered along theprimary route in a direction of travel from a starting point of theprimary route toward a destination point of the primary route.
 18. Thecomputer storage medium of claim 16, wherein the first intersectionbetween the primary route and the first alternate route furthercomprises a next intersection encountered along the primary route in adirection of travel from a current location on the primary route towarda destination point of the primary route.
 19. The computer storagemedium of claim 16, wherein the method further comprises: determining asecond alternate route; determining at least a first intersectionbetween the primary route and the second alternate route; determining apriority score for individual cameras of the plurality of cameras usingthe camera metadata, where the priority score is based, at least inpart, on proximity to the first intersection between the primary routeand the second alternate route; selecting at least one other camera ofthe plurality of cameras based on the priority score of the camerabased, at least in part, on proximity to the first intersection betweenthe primary route and the second alternate route; and receiving imagedata generated by the at least one other camera for rendering the imagedata on the display.
 20. The computer storage medium of claim 16,wherein the step of determining a priority score for individual camerasof the plurality of cameras using the camera metadata, where thepriority score is based, at least in part, on proximity to the firstintersection between the primary route and the first alternate route,and wherein the priority score is further based, at least in part, on atleast one of a camera orientation, a position before or after the firstintersection, an operational status, an image quality, a type ofintersection, a time stamp, a type of image, an individual user history,data defining a crowdsourced history, traffic data, or data defining ahistorical performance of one or more routes.